package com.alks.function.data.dto.finance.fincons;

import com.alks.common.utils.BigDecimalUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * @author: chen
 * @date: 2024/12/13
 * @description:
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MonthItemDTO {

    private BigDecimal balanceAmt = BigDecimal.ZERO; // 已对账

    private BigDecimal apAmt = BigDecimal.ZERO;   // 已付

    private BigDecimal unApAmt = BigDecimal.ZERO; // 未付

    public void add(MonthItemDTO monthItemDTO) {
        this.balanceAmt = BigDecimalUtil.add(this.balanceAmt, monthItemDTO.getBalanceAmt());
        this.apAmt = BigDecimalUtil.add(this.apAmt, monthItemDTO.getApAmt());
        this.unApAmt = BigDecimalUtil.add(this.unApAmt, monthItemDTO.getUnApAmt());
    }

    public BigDecimal getBalanceAmt() {
        if (balanceAmt.compareTo(BigDecimal.ZERO) > 0) {
            return balanceAmt;
        } else {
            return null;
        }
    }

    public BigDecimal getApAmt() {
        if (apAmt.compareTo(BigDecimal.ZERO) > 0) {
            return apAmt;
        } else {
            return null;
        }
    }

    //public BigDecimal getUnApAmt() {
    //    if (unApAmt.compareTo(BigDecimal.ZERO) > 0) {
    //        return unApAmt;
    //    } else {
    //        return null;
    //    }
    //}

    //需求：如果全部已付的，未支付需要现实为0
    public BigDecimal getUnApAmt() {
        // 如果 balanceAmt 和 apAmt 都不为0且相同，则返回0
        if (balanceAmt.compareTo(BigDecimal.ZERO) > 0 &&
                apAmt.compareTo(BigDecimal.ZERO) > 0 &&
                balanceAmt.compareTo(apAmt) == 0 ) {
            return unApAmt;
        } else {
            // 否则按照原定的逻辑处理
            if (unApAmt.compareTo(BigDecimal.ZERO) > 0) {
                return unApAmt;
            } else {
                return null;
            }
        }
    }
}
